package com.cxso.example.request.report;

import com.cxso.example.enums.report.ContractTypeEnum;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Getter;
import lombok.Setter;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;

@Getter
@Setter
public class ReportContractRequest implements Serializable {

    @NotBlank
    @Schema(description = "主体id")
    private String bodyId;

    @Schema(description = "运单号")
    @NotBlank(message = "运单号不能为空")
    private String shippingNoteNumber;

    @NotNull
    @Schema(description = "合同类型")
    private ContractTypeEnum contractType;

    @Schema(description = "合同编号")
    private String contractNumber;

    @Schema(description = "甲方名称")
    private String partyAName;

    @Schema(description = "甲方统一社会信用代码或个人证件号")
    private String partyAId;

    @Schema(description = "合同业务名称")
    private String contractBusinessName;

    @Schema(description = "合同金额")
    private BigDecimal contractAmount;

    @Schema(description = "约定业务完成时间")
    private Date agreedBusinessCompletionTime;

    @Schema(description = "乙方名称")
    private String partyBName;

    @Schema(description = "乙方统一社会信用代码")
    private String partyBId;

    @Schema(description = "乙方收款账号")
    private String partyBAccount;

    @Schema(description = "银行名称")
    private String bankName;

    @Schema(description = "业务实际完成时间")
    private Date businessActualCompletionTime;

    @Schema(description = "付款金额")
    private BigDecimal paymentAmount;

    @Schema(description = "合同签订时间")
    private Date contractSigningTime;

    @Schema(description = "合同签订承运量")
    private BigDecimal contractedCarryingCapacity;

    @Schema(description = "合同签订承运量单位：吨/立方米/件/车")
    private String unit;

    @Schema(description = "约定甲方付款时间")
    private Date promisePayTime;

    @Schema(description = "乙方收款名称")
    private String partyBReceiptName;

    @Schema(description = "收取服务费标准")
    private String serviceCharge;

    @Schema(description = "甲方收款账号")
    private String partyAAccount;

    @Schema(description = "甲方收款银行")
    private String partyABankName;

    @Schema(description = "乙方银行")
    private String partyBBankName;

    @Schema(description = "合同文件")
    private String contractUrl;


}
